import matplotlib.pyplot as plt
import numpy as np

# 绘制直方图


x = np.random.randn(1000)
# x : 输入数据，可以是数组或数组序列
# 必需参数，包含要绘制直方图的数据
# bins : int 或 sequence 或 str, 可选
# 定义直方图的柱子数量或边界
# 可以是整数（指定柱子数量）、序列（指定柱子边界）或字符串（指定计算柱子数量的算法）
# 常用字符串值: 'auto', 'sturges', 'fd', 'doane', 'scott', 'rice', 'sqrt'
# range : tuple 或 None, 可选
# 指定数据的上下界，超出范围的值将被忽略
# 格式：(最小值, 最大值)
# density : bool, 可选
# 如果为 True，直方图将归一化为概率密度（面积总和为1）
# 如果为 False，显示的是计数
# weights : array-like 或 None, 可选
# 与x形状相同的权重数组
# 用于对每个数据点赋予不同的权重
plt.hist(x, bins=100)  # 装箱的操作，将 10 个柱装到一起及修改柱的宽度(10*100 = 1000)
plt.show()

# 几个直方图画到一个画布中,第一个参数期望 第二个均值 ,第三个是样本数量
x1 = np.random.normal(0, 0.9, 1000)
x2 = np.random.normal(-2, 1, 1000)
x3 = np.random.normal(3, 2, 1000)
# 参数分别是 bins：装箱，alpha：透明度
kwargs = dict(bins=100, alpha=0.4)
plt.hist(x1, **kwargs)
plt.hist(x2, **kwargs)
plt.hist(x3, **kwargs)
plt.show()